Apache Spark 是一個強大的大數據處理平臺,各位也知道,現在大數據的資料規模和產生速度都是 TB or PB 級的,所以要有一個強大的平台來協助處理這些資料,那這個時候大家通常會腦海中會浮現 Hadoop 或是 Spark,那為什麼我要選 Spark 而不選 Hadoop 呢?
客倌請看:
Hadoop
Spark
Spark 是基於記憶體內的計算框架。Spark 在運算時,將中間產生的資料暫存在記憶體中,因此可以加快執行速度。尤其需要反覆操作的次數越多,所需讀取的資料量越大,則越能看出 Spark 的效能,而 Hadoop 每次做完一次運算就必須做硬碟 I/O,所以兩者差異就很明顯了。
接下來我們來看一下 Spark 的架構:
Spark 除了有豐富的函式庫,也對 Python, Java, Scala, R 提供了相同一致的 API :
Spark Core
Spark Core 包含了一些基礎功能,如工作排程 記憶體管理等,而 Spark 主要的程式抽象化結構 - RDD (Resilient Disributed Datasets 彈性分散式資料集) 的 API 也是定義在 Spark Core 中。
Spark SQL
Spark SQL 是處理結構化資料所產生的元件,它允許使用者使用如同 Apache Hive 一樣透過 SQL 語法做資料查詢,除了提供 SQL 使用介面外,Spark SQL 也允許開發人員將 SQL 查詢與其他 RDD 所支援的資料處理方式一起使用。
Spark Streaming
顧名思義,Spark Streaming 是一個在處理即時串流資料的元件,例如 web server 所產生的 log,或是服務狀態的變化,Spark Streaming 提供處理這類資料的 API。
MLlib
Spark MLlib 提供了常見的 machine learning 函式庫,在 MLlib 裡面除了常見的分類分群和迴歸之外,也提供了模型評估和資料導入的功能。
GraphX
這是用來在 Spark 處理圖像相關資料及進行分散式圖像處理的函式庫,GraphX 提供了很多處理圖像的操作,如subgraph 和 mapVertices 以及常見的圖形演算法。
上面我們介紹了 Spark,那下一篇我們來講解一下 pyspark API 的初步使用。
歡迎入坑 Apache Spark, 個人滿推薦 "joechh大大" 的 Spark in scala鐵人30天, 也滿期待您的後續文章 in pyspark ! 未來有機會, 小弟再把 Spark in Java 這塊補齊 ! :)
Thanks!!
其實已經接觸一段時間了,只是寫一個筆記,順便驗證自己想的對不對,如果有誤,還請多多指正!